package com.youlai.boot.system.model.form;

import java.io.Serial;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDate;

import jakarta.validation.constraints.*;

/**
 * 供应链日报表单对象
 *
 * @author xiheforever
 * @since 2025-06-01 23:18
 */
@Getter
@Setter
@Schema(description = "供应链日报表单对象")
public class SupplyChainReportForm implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @Schema(description = "店铺名称")
    @NotBlank(message = "店铺名称不能为空")
    @Size(max=255, message="店铺名称长度不能超过255个字符")
    private String storeName;

    @Schema(description = "报告日期")
    @NotNull(message = "报告日期不能为空")
    private LocalDate reportDate;

    @Schema(description = "现货数量（箱）")
    @NotNull(message = "现货数量（箱）不能为空")
    private Integer spotQuantity;

    @Schema(description = "在途数量（箱）")
    @NotNull(message = "在途数量（箱）不能为空")
    private Integer inTransitQuantity;

    @Schema(description = "合计数量（箱）")
    @NotNull(message = "合计数量（箱）不能为空")
    private Integer totalQuantity;

    @Schema(description = "现货金额（万元）")
    @NotNull(message = "现货金额（万元）不能为空")
    private BigDecimal spotAmount;

    @Schema(description = "在途金额（万元）")
    @NotNull(message = "在途金额（万元）不能为空")
    private BigDecimal inTransitAmount;

    @Schema(description = "合计金额（万元）")
    @NotNull(message = "合计金额（万元）不能为空")
    private BigDecimal totalAmount;

    @Schema(description = "现货周转天数")
    @NotNull(message = "现货周转天数不能为空")
    private Integer spotTurnoverDays;

    @Schema(description = "含在途周转天数")
    @NotNull(message = "含在途周转天数不能为空")
    private Integer withInTransitTurnoverDays;

    @Schema(description = "本月NR目标（万元）")
    @NotNull(message = "本月NR目标（万元）不能为空")
    private BigDecimal nrTarget;

    @Schema(description = "已下单金额（万元）")
    @NotNull(message = "已下单金额（万元）不能为空")
    private BigDecimal orderedAmount;

    @Schema(description = "达成率（%）")
    @NotNull(message = "达成率（%）不能为空")
    private BigDecimal achievementRate;

    @Schema(description = "PV现货率（%）")
    @NotNull(message = "PV现货率（%）不能为空")
    private BigDecimal pvSpotRate;


}
